
package com.bajie.bjlisten.utils;

import com.google.common.collect.Lists;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 字符串工具类, 后续完善继承org.apache.commons.lang3.StringUtils类
 * TODO
 */
public class StringUtils {

    /**
     * 工具类，私有化构造方法
     */
    private StringUtils() {
    }

    /**
     * 校验字符串
     *
     * @param string 传入字符串
     * @return true-为空；false-不为空
     */
    public static boolean isEmpty(String string) {
        return string == null || string.isEmpty() || "null".equals(string);
    }

    /**
     * 校验字符串
     *
     * @param string 传入字符串
     * @return false-为空；true-不为空
     */
    public static boolean isNotEmpty(String string) {
        return !isEmpty(string);
    }

    /**
     * 校验集合类-Collection
     *
     * @param collection 传入集合
     * @return true-为空；false-不为空
     */
    public static boolean isEmpty(Collection collection) {
        return collection == null || collection.isEmpty();
    }

    /**
     * 校验集合类-Collection
     *
     * @param collection 传入集合
     * @return false-为空；true-不为空
     */
    public static boolean isNotEmpty(Collection collection) {
        return !isEmpty(collection);
    }

    /**
     * 校验集合类-Map
     *
     * @param map 传入集合
     * @return true-为空；false-不为空
     */
    public static boolean isEmpty(Map map) {
        return map == null || map.isEmpty();
    }

    /**
     * 校验集合类-Map
     *
     * @param map 传入集合
     * @return false-为空；true-不为空
     */
    public static boolean isNotEmpty(Map map) {
        return !isEmpty(map);
    }

    /**
     * 校验字符串是否为XML替换标签
     *
     * @param string 传入集合
     * @return true-是XML替换标签；false-不为空
     */
    public static boolean isXMLFlag(String string) {
        if (isNotEmpty(string)) {
            return string.startsWith("${") && string.endsWith("}");
        }
        return false;
    }

    /**
     * 校验字符串是否相等
     *
     * @param src 原字符串
     * @param tar 比较字符串
     * @return true-相等；false-不相等
     */
    public static boolean isEqual(String src, String tar) {
        if (isEmpty(src) || isEmpty(tar)) {
            return false;
        }
        return src.equals(tar);
    }

    /**
     * 校验集合是否只有一个元素
     *
     * @param collection 传入集合
     * @return true-只有一个元素；false-不只有一个元素或为空
     */
    public static boolean isSingle(Collection collection) {
        return isNotEmpty(collection) && collection.size() == 1;
    }


    /**
     * 字符串转为驼峰
     *
     * @param str
     * @return
     */
    public static String str2hump(String str) {
        StringBuffer buffer = new StringBuffer();
        if (str != null && str.length() > 0) {
            if (str.contains("_")) {
                String[] chars = str.split("_");
                int size = chars.length;
                if (size > 0) {
                    List<String> list = Lists.newArrayList();
                    for (String s : chars) {
                        if (s != null && s.trim().length() > 0) {
                            list.add(s);
                        }
                    }

                    size = list.size();
                    if (size > 0) {
                        buffer.append(list.get(0));
                        for (int i = 1; i < size; i++) {
                            String s = list.get(i);
                            buffer.append(s.substring(0, 1).toUpperCase());
                            if (s.length() > 1) {
                                buffer.append(s.substring(1));
                            }
                        }
                    }
                }
            } else {
                buffer.append(str);
            }
        }

        return buffer.toString();
    }
}
